package org.galio.tourcoruna;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import org.galio.tourcoruna.modelo.Coordenadas;

import android.graphics.Color;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.TextView;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;

public class MiMapaParadaTour extends MapActivity
{
	 private MapView mapa = null;
	 private MapController controlMapa = null;
	 TextView tv1, tv;
	 int values[], values1[];
	 boolean sat;
	 
	 TipoLugar tipoLugar = TipoLugar.ALL;
	 String nombreLugarSeleccionado = null;
	 
	    @Override
	    public void onCreate(Bundle savedInstanceState) 
	    {
	        super.onCreate(savedInstanceState);
	        
	        requestWindowFeature(Window.FEATURE_NO_TITLE);
	        
	        setContentView(R.layout.mimapa);
	        
	        
	        
	        tv  = (TextView)findViewById(R.id.direcion);
	        tv.setBackgroundColor(Color.YELLOW);
	        tv1  = (TextView)findViewById(R.id.textView1);
	        tv1.setBackgroundColor(Color.BLACK);
	        tv1.setTextColor(Color.YELLOW);
	        tv1.setText("Satelite");
	        
	        sat = false;
	        
	        Bundle bundle = this.getIntent().getExtras();
	        Coordenadas miPosicion = new Coordenadas(bundle.getDouble("miLat"), bundle.getDouble("miLon"));//recibimos parametro    
	        nombreLugarSeleccionado = bundle.getString("nombreLugar");
	        tipoLugar = TipoLugar.values()[bundle.getInt("tipoLugar")];
	        
	        dibujarmapa(miPosicion);
	    }
	    
	    public void dibujarmapa(Coordenadas miPosicion)
	    {
	    	 //Obtenemos una referencia al control MapView
	        mapa = (MapView)findViewById(R.id.mapview);
	 
	        //Mostramos los controles de zoom sobre el mapa
	        MyLocationOverlay mlo = new MyLocationOverlay(this, mapa);
	        
	        mlo.enableCompass();
	        //mlo.enableMyLocation();
	        mapa.setBuiltInZoomControls(true);
	        
	        mapa.setSatellite(sat);
	        
	        controlMapa = mapa.getController();  //necesitamos un Mapcontroller para indicar nuestros puntos centrales

	        GeoPoint loc = new GeoPoint(miPosicion.getLatitudToInt(), miPosicion.getLongitudToInt());
	     
	        controlMapa.setCenter(loc);   //el centro de mi mapa
	        
	        controlMapa.setZoom(17);
	       //Añadimos la capa de marcadores
	        List<Overlay> capas = mapa.getOverlays();
	        
	        MiMapaParadaOverlayTour om = new MiMapaParadaOverlayTour(miPosicion, tipoLugar, nombreLugarSeleccionado); //nueva instancia de nuestra capa
	        
	        capas.add(om);     //añadimos a la lista
	        capas.add(mlo);
	
	        
	        mapa.postInvalidate();//redibujamos mapa y todas sus capas
	        //instanciamos un objeto Geocoder para obtener una direcci�n a partir de unas coordenadas
	        Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
	        try 
	        {
	        	
	    	    String address  = "";
            	geoCoder.getFromLocation(40,  4, 1);
                List<Address> addresses = geoCoder.getFromLocation(miPosicion.getLatitud(), miPosicion.getLongitud(), 1);
                if (addresses.size() > 0) {
                  for (int i = 0; i < addresses.get(0).getMaxAddressLineIndex(); i++)
                     address += addresses.get(0).getAddressLine(i) + "   ";
               }
               Log.i("adress", address);
               tv.setText(address);

          } catch (IOException e) {
              e.printStackTrace();
          }
	    }
	    
	   /* @Override
	    protected void onPause() 
	    {
	    	super.onPause();
	    	mlocationManager.removeUpdates(mlocationListener);
	 	    mlocationManager = null;
	 	    
	    }
	    
	    @Override
	    protected void onStart() 
	    {
	    	super.onStart();
	    	 mlocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);//Instancia de location manager
	     	if (mlocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)  &&
	     			mlocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
	     	{
	     		mlocationListener = new MyLocationListener();
	     		
	     		mlocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocationListener);
	     	}
	    	
	    }*/
	    
	   /* private class MyLocationListener implements LocationListener //interfaz
	    {

			public void onLocationChanged(Location location) 
			{
				
				mostrarPosicion(location);			
							
			}

			public void onProviderDisabled(String provider) {}

			public void onProviderEnabled(String provider) {}

			public void onStatusChanged(String provider, int status, Bundle extras) {}
	    	
	    	
	    }
	    
	    public void mostrarPosicion(Location location)
	    {
	    	if (location != null) 
	        {	
	    	
	    	int milat = (int)(location.getLatitude() * 1E6);  
			int milong = (int)(location.getLongitude() * 1E6);
			
			mlocationManager.removeUpdates(mlocationListener);
	 	    mlocationManager = null;
			
			dibujarmapa(milat, milong);
	        }
	  
	     }  */
	    
	
	    public void redibujar(View view)
	    {
	    	if(tv1.getText().toString().equals("Satelite"))
	    	{
	    	 tv1.setText("Callejero");
	    	 mapa.setSatellite(sat = true);
	    	 mapa.postInvalidate();
	    	}
	    	else
	    	{
	    		 tv1.setText("Satelite");
		    	 mapa.setSatellite(sat = false);
		    	 mapa.postInvalidate();
	    		
	    	}
	    }
	
	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
	
}
